package educar.models;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import educar.db.JPA;

public class Cargo {
  private static JPA jpa = new JPA();
  private int codigo;
  private String descripcion;
  private Dedicacion dedicacion;
  
  /**
  * @param cod "codigo de cargo"
  * @param descripcion "nombre de cargo"
  */
  public Cargo(int cod, String descripcion){
    codigo=cod;
	this.descripcion=descripcion;
  }
	
  /**
  * 
  * @return codigo "codigo de cargo"
  */
  public int getCodigo(){
    return codigo;
  }
	
  /**
  * 
  * @return descripcion "nombre de cargo"
  */
  public String getDescripcion(){
    return descripcion;
  }
	
  /**
  * 
  * @return dedicacion "descripcion de la dedicacion (semi,full,simple)"
  */
  public Dedicacion getDedicacion(){
    return dedicacion;
  }
	
  /**
  * 
  * @param nuevaDescripcion "nombre de cargo"
  */
  public void setDescripcion(String nuevaDescripcion){
    descripcion=nuevaDescripcion;
  }
	
  /**
  * 
  * @param ded "descripcion de la dedicacion (semi,full,simple)"
  */
  public void setDedicacion(Dedicacion ded){
    dedicacion=ded;
  }
  
  /**
  * 
  * @param codigo "codigo de cargo"
  * @return u de tipo Cargo
  * @throws userNotFound
  */
  public static Cargo getCargoByCodigo(String codigo) throws userNotFound {
    ResultSet rs = null;
	Cargo u = null;
	rs = jpa.getByField("cargo","cod_cargo",codigo);
	try {
	  if (rs.next()) {
	    u = new Cargo(rs.getInt(1), rs.getString(2));
	  } 
	  else {
	    throw new userNotFound();
	  }
	}
    catch (SQLException e) {
	  e.printStackTrace();
	}
	return u;
  }
	
  /**
  * Guarda y confirma la carga 
  * @return true "si el cargo es cargado correctamente"
  * @return false "si el cargo no es cargado correctamente"
  */
  public boolean save() {
    try {
	  String codigo = Integer.toString(this.getCodigo());
	  Cargo.getCargoByCodigo(codigo);
	  return false;
	} 
    catch (userNotFound e1) {
	  String[] columns = { "cod_cargo","descripcion"};
	  PreparedStatement stm = jpa.newRecord("educar_dev.cargo", columns);
	  try {
	    stm.setInt(1,this.getCodigo());
		stm.setString(2,this.getDescripcion());
	  }
	  catch (SQLException e) {
	    e.printStackTrace();
		return false;
	  }
	  jpa.create(stm);
	  return true;
	  }
  }
  
  /**
  * Elimina cargo
  * @param table "nombre de la tabla"
  * @param column "nombre de la columna"
  * @param id "codigo de cargo"
  */
  public static void destroy(String table,String column,String id) {
    jpa.destroy(table,column,id); 
  }
	
  /**
  * Guarda en ArrayList los nombres de los cargos obtenidos de la base
  * @return cargos "lista con los nombres de los cargos"
  * @throws SQLException
  */
  public static ArrayList<String> getNombres() throws SQLException{
    ResultSet resultado = jpa.showAll("cargo");
    ArrayList<String> cargos = new ArrayList<String> ();
    while (resultado.next()) {
      cargos.add(resultado.getString(1));
    }
    return cargos;
  }
}
